package moreApi.src.regex;

/**
 * 正则表达式的具体规则
 * 1.字符类用[]包括起来,默认只能匹配一个字符,例如[abc]只能匹配abc中其中一个
 * 括号内还可以使用范围表示,例如[a-dl-n]表示a到d和l到n
 * 可以使用^符号排除一些字符,用逻辑与&&实现交运算,例如[a-z&&[^a-d]](写多条件时候要注意加中括号,也不要顺手带空格,空格也是字符)表示a-z中排除a-d的
 *
 * 2.预定义的字符类:(默认都是一个字符)
 * .(任意字符)
 * \d(数字)    \D非数字
 * \s空白字符   \S非空白字符
 * \w数字,字母和下划线  \W除了数字,字母,下划线
 *
 * 3.数量词(匹配多个字符使用)
 * X?   X最多出现一次
 * X*   X不是1次就行
 * X+   X最少出现一次
 * X{n}   X刚好出现n次
 * X{n,}   X最少出现n次
 * X{n,m}   X出现次数在[n,m]
 *
 * 字符串对象提供了maches方法,用来匹配正则表达式
 */
public class RegexDemo2 {
    public static void main(String[] args) {
        System.out.println("a".matches("[abc]"));//true
        System.out.println("z".matches("[abc]"));//false

        System.out.println("a".matches("\\d"));//false
        System.out.println("3".matches("\\d"));//true
        System.out.println("333".matches("\\d"));//false
        System.out.println("z".matches("\\w"));//true
        System.out.println("2".matches("\\w"));//true
        System.out.println("21".matches("\\w"));//false

        //6位以上的字母数字下划线
        System.out.println("ssds3c".matches("\\w{6,}"));//true
        System.out.println("ssdsc".matches("\\w{6,}"));//false
        System.out.println("ssds23空c".matches("\\w{6,}"));//false

        //4位数字和字符
        System.out.println("dsd2".matches("[a-zA-Z0-9]{4}"));
        System.out.println("A6Yh".matches("[a-zA-Z0-9]{4}"));
        System.out.println("dsd2s".matches("[a-zA-Z0-9]{4}"));
    }
}
